package model.impl;

import sharedGameLogic.enums.BattleEvent;

class BattleAction {
	
	//The physical strength of this action
	private int attackStrength;
	//The physical speed of this action
	private int attackSpeed;
	//The physical precision of this action
	private int attackPrecision;
	//How good you are at dodging while performing this action
	private int dodge;
	//How good you can block incoming damage while performing this action
	private int block;
	//How strong this actions magic is.
	private int magicalStrength;
	//How precise/skilled this actions is magically
	private int magicalPrecision;
	//This actions type that determines its animation
	private BattleEvent actionType;
	
	
	/**
	 * Creates a battle action given a players BattleStatus and 
	 * the modifiers determined by what the action performed 
	 * 
	 * @param player - the player performing the action
	 * @param aStrMod - this actions modifier of physical attack strength
	 * @param aSpdMod - this actions modifier of physical attack speed
	 * @param aPreMod - this actions modifier of physical attack precision
	 * @param dodMod - this actions modifier of dodge
	 * @param bloMod - this actions modifier of block
	 * @param mStrMod - this actions modifier of magical strength
	 * @param mPreMod - this actions modifier of magical precision
	 * @param a - this actions type for animation purposes
	 */
	
	public BattleAction(int atStr, int atSpd, int atPre, int dodge, int block, int mStr, int mPre, BattleEvent a){
		
		attackStrength = atStr;
		attackSpeed = atSpd;
		attackPrecision = atPre;
		this.dodge = dodge;
		this.block = block;
		magicalStrength = mStr;
		magicalPrecision = mPre;
		actionType = a;
		
	}
	
	/**
	 * Accessor for the actions attack strength.
	 * @return Characters maximum attack strength
	 */
	public int getAttackStrength() {
		return attackStrength;
	}
	
	/**
	 * Accessor for the actions attack speed
	 * @return Characters maximum attack speed
	 */
	public int getAttackSpeed() {
		return attackSpeed;
	}
	
	/**
	 * Accessor for the actions attack precision
	 * @return Characters maximum attack precision
	 */
	public int getAttackPrecision() {
		return attackPrecision;
	}
	
	/**
	 * Accessor for the actions dodge value
	 * @return Characters maximum dodge value
	 */
	public int getDodge() {
		return dodge;
	}
	
	/**
	 * Accessor for the actions block value
	 * @return Characters maximum block value
	 */
	public int getBlock() {
		return block;
	}
	
	/**
	 * Accessor for the actions magical attack strength
	 * @return Characters maximum magical attack strength
	 */
	public int getMagicalStrength() {
		return magicalStrength;
	}

	/**
	 * Accessor for the actions magical attack precision
	 * @return Characters maximum magical attack precision
	 */
	public int getMagicalPrecision() {
		return magicalPrecision;
	}
	
	/**
	 * Accessor for the actions type for animation
	 * @return action - the actions type for animation
	 */
	public BattleEvent getBattleActionType() {
		return actionType;
	}
}
